#!/bin/bash
pin=98 #40脚控制

# 判断IO操作文件是否存在？
# 返回：1 存在、0 不存在
function gpio_file_exist(){
    gpio_pin=$1
    ret=99
    path="/sys/class/gpio/gpio$gpio_pin"
    if [ -d $path ]; then 
        # echo ">>> gpio$gpio_pin 文件存在" 
        ret=1
    else 
        # echo ">>> gpio$gpio_pin 文件不存在" 
        ret=0
    fi

    return $ret
}

# 初始化函数
# 输入参数：pin
function gpio_init(){
    gpio_pin=$1
    # 判断是否存在，不存在则创建
    gpio_file_exist $gpio_pin # 查询
    if [ $? == 0 ]; then 
        # 存在
        echo $gpio_pin > /sys/class/gpio/export # 创建
        ls -l /sys/class/gpio/ | grep gpio$gpio_pin
    else
        echo ">>> gpio is inited! "
    fi
  
}

# 获取当前IO方向
# 输入：pin
# 返回：1 out、0 in
function get_gpio_direction(){
    gpio_pin=$1
    gpio_file_exist $gpio_pin
    if [ $? ];then
        # 存在
        if [ "$(cat /sys/class/gpio/gpio$gpio_pin/direction)" == "out" ];then
            # out
            return 1
        else
            # in
            return 0
        fi
    else
        echo "GPIO file not found." >&2
        return 99
    fi
}

# 设置IO方向，
# 输入参数为0 in或1 out
function gpio_direction(){
    direction=$1
    gpio_pin=$2
    if [ "get_gpio_direction $gpio_pin" != $direction ];then
        #echo $direction > /sys/class/gpio/gpio$gpio_pin/direction
        if [ $direction != 0 ];then
            # out
            echo out > /sys/class/gpio/gpio$gpio_pin/direction
        else
            # in
            echo in > /sys/class/gpio/gpio$gpio_pin/direction
        fi
    fi
    echo ">>> set gpio_pin is $(cat /sys/class/gpio/gpio$gpio_pin/direction) mode,direction=$direction"

}

# 获取当前电平值
function get_gpio_outvalue(){
    gpio_pin=$1
    gpio_file_exist $gpio_pin
    if [ $? ];then
        # 存在
        return $(cat /sys/class/gpio/gpio$gpio_pin/value)
    else
        return 99
    fi
}

# 设置GPIO的输出电平
# 输入参数：0 低电平/1 高电平
# 输入参数：pin
function gpio_outvalue(){
    outlevel=$1
    gpio_pin=$2

    echo $outlevel > /sys/class/gpio/gpio$gpio_pin/value
}


###################################################################

# # 初始化gpio
# gpio_init $pin

# # 设置GPIO方向
# # gpio_direction 1 $pin
# get_gpio_direction $pin
# echo ">>> IO direction is $?"

# # 查询IO
# get_gpio_outvalue $pin
# echo ">>> IO value is $?"

# # 设置IO电平
# gpio_outvalue 1 $pin

# get_gpio_outvalue $pin
# echo ">>>> IO value is $?"


